package com.xujie.sportsmeeting.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.math.BigDecimal;
import java.util.List;

/**
 * 参赛情况统计VO
 */
@Data
@Schema(description = "参赛情况统计信息")
public class ParticipationStatisticsVO {

    @Schema(description = "总报名数")
    private Long totalRegistrations;

    @Schema(description = "已审核报名数")
    private Long approvedRegistrations;

    @Schema(description = "待审核报名数")
    private Long pendingRegistrations;

    @Schema(description = "拒绝报名数")
    private Long rejectedRegistrations;

    @Schema(description = "报名审核率")
    private BigDecimal approvalRate;

    @Schema(description = "男子报名数")
    private Long maleRegistrations;

    @Schema(description = "女子报名数")
    private Long femaleRegistrations;

    @Schema(description = "男女比例")
    private BigDecimal genderRatio;

    @Schema(description = "平均每人报名项目数")
    private BigDecimal averageEventsPerAthlete;

    @Schema(description = "最受欢迎项目")
    private String mostPopularEvent;

    @Schema(description = "最受欢迎项目报名数")
    private Integer mostPopularEventCount;

    @Schema(description = "参赛院系数")
    private Integer participatingDepartments;

    @Schema(description = "参赛班级数")
    private Integer participatingClasses;

    @Schema(description = "院系参与率")
    private BigDecimal departmentParticipationRate;

    @Schema(description = "班级参与率")
    private BigDecimal classParticipationRate;

    @Schema(description = "每日报名趋势")
    private List<DailyRegistrationVO> dailyTrends;

    @Schema(description = "项目热度排行")
    private List<EventPopularityVO> eventPopularity;

    @Schema(description = "院系参与排行")
    private List<DepartmentParticipationVO> departmentRanking;

    @Schema(description = "报名完成度")
    private BigDecimal registrationCompleteness;

    @Schema(description = "预计参赛总人数")
    private Integer estimatedTotalParticipants;

    @Schema(description = "实际参赛人数")
    private Integer actualParticipants;

    @Schema(description = "出勤率")
    private BigDecimal attendanceRate;
}
